# -*- coding: utf-8 -*-
# @Time    : 2020/2/26 下午12:00
# @Author  : lilong
# @File    : exp.py

from . import IHightPerson, ShortPerson


class HighPerson(IHightPerson):
    """个高的人"""

    def __init__(self, name, height):
        self.__name = name
        self.__height = height

    def getName(self):
        return self.__name

    def getHeight(self):
        return self.__height


class AdaptationPerson(ShortPerson, IHightPerson):
    """有高跟鞋搭配的人
    AdaptationPerson：是一个适配器，是对 ShortPerson 的适配，它将 ShortPerson 的对象转换（或说包装）成符合 HighPerson 接口的对象
    将 ShortPerson 的 getRealHeight 和 getShoesHeight 方法包装成 IHightPerson 的 getHeight 接口

    （1）个人理解：ShortPerson类有自己特有的属性值，要想和原本HighPerson类一样调用同样的接口getName和getHeight，
    就必须抽象出一个借口类，然后再新加一个适配器，适配ShortPerson类

    （2）注意：由于父类的构造函数只在ShortPerson中出现，所以可以放在第一个顺位继承类，这样就不用在适配器中再写构造函数。
    """

    # 其实最好实现该构造函数
    # def __init__(self, name, realHeight, shoesHeight):
    #     ShortPerson.__init__(self, name, realHeight, shoesHeight)

    # 包装ShortPerson类的两个函数为标准接口函数
    def getHeight(self):
        return super().getRealHeight() + super().getShoesHeight()


